/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controllers.Cipem;

import Daos.AtividadeDao;
import Daos.ControlePresencaDao;
import Daos.InscricaoDao;
import Daos.UsuarioDao;
import Daos.UsuarioExternoDao;
import Model.Atividade;
import Model.ControlePresenca;
import Model.Inscricao;
import Model.UsuarioExterno;
import Util.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.PageContext;

/**
 *
 * @author alissonrenan
 */
@WebServlet(name = "ServletExterno", urlPatterns = {"/cipem/externo"})
public class ServletExterno extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }

    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {



        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        String option = request.getParameter("op");
        if (option != null) {
            option = option.toLowerCase();
        }
        RequestDispatcher rd;
        rd = request.getRequestDispatcher("/cipem/pagina404.jsp");
        UsuarioExterno usuarioExterno = (UsuarioExterno) session.getAttribute("user");

        if (option != null) {
            switch (option) {
                case "getcracha":
                    if (usuarioExterno != null) {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoCracha.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/index.jsp");
                    }
                    break;
                case "inscricao":
                    if (usuarioExterno != null) {
                        //Verifica se os dados estão atualizados para proceder com a inscrição
//                        if (!UtilUsuario.dadosValidos(usuarioExterno)) {
//                            rd = request.getRequestDispatcher("/cipem/usuarioExternoUpdate.jsp");
//                        } else {
                            rd = request.getRequestDispatcher("/cipem/usuarioExternoInscricao.jsp");
//                        }
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;
                case "insert":
                    if (usuarioExterno != null) {
                        rd = request.getRequestDispatcher("/cipem/index.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoInsert.jsp");
                    }
                    break;
                case "login":
                    if (usuarioExterno != null) {
                        rd = request.getRequestDispatcher("/cipem/index.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;
                case "logout":
                    //request.removeAttribute("user");
                    session.invalidate();
                    rd = request.getRequestDispatcher("/cipem/index.jsp");
                    break;
                case "resetpassword":
                    if (usuarioExterno != null) {
                        rd = request.getRequestDispatcher("/cipem/index.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoResetSenha.jsp");
                    }
                    break;
                case "update":
                    if (usuarioExterno != null) {
                        request.setAttribute("user", usuarioExterno);
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoUpdate.jsp");
                        rd.forward(request, response);
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;
                case "updatesenha":
                    if (usuarioExterno != null) {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoUpdateSenha.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;

                case "usuariosinscritos":
                    String ativado = (String) session.getAttribute("ativado");
                    if (ativado != null) {
                        List<Inscricao> inscricoes = new InscricaoDao().list();
                        ArrayList<UsuarioExterno> usuariosConfirmados = new ArrayList<UsuarioExterno>();
                        ArrayList<UsuarioExterno> usuariosNaoConfirmados = new ArrayList<UsuarioExterno>();
                        for (Inscricao inscricao : inscricoes) {
                            if (inscricao.isConfirmado()) {
                                usuariosConfirmados.add((UsuarioExterno) inscricao.getUsuario());
                            } else {
                                usuariosNaoConfirmados.add((UsuarioExterno) inscricao.getUsuario());
                            }
                        }
                        session.setAttribute("inscricoes", inscricoes);
                        session.setAttribute("usuariosconfirmados", usuariosConfirmados);
                        session.setAttribute("usuariosnaoconfirmados", usuariosNaoConfirmados);
                        session.setAttribute("ativado", "inscritos");
                        rd = request.getRequestDispatcher("/cipem/admcipem.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;

                case "confirmainscricao":
                    ativado = (String) session.getAttribute("ativado");
                    if (ativado != null) {
                        session.setAttribute("admlogado", "sim");
                        session.setAttribute("ativado", "confirmainscricao");
                        rd = request.getRequestDispatcher("admcipem.jsp");

                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }

                    break;

                case "presenca":
                    ativado = (String) session.getAttribute("ativado");
                    if (ativado != null) {
                        session.setAttribute("admlogado", "sim");
                        session.setAttribute("ativado", "presenca");
                        rd = request.getRequestDispatcher("admcipem.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;

                case "presencapalestra1":
                    ativado = (String) session.getAttribute("ativado");
                    if (ativado != null) {
                        ControlePresenca controlePresenca = new ControlePresencaDao().get(51L);
                        List<UsuarioExterno> inscritos = controlePresenca.getUsuarios();
                        session.setAttribute("palestra", 1);
                        session.setAttribute("listadeinscritos", (List<UsuarioExterno>) inscritos);
                        session.setAttribute("controlarPresenca", "sim");
                        rd = request.getRequestDispatcher("admcipem.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;

                case "presencapalestra2":
                    ativado = (String) session.getAttribute("ativado");
                    if (ativado != null) {
                        ControlePresenca controlePresenca = new ControlePresencaDao().get(52L);
                        List<UsuarioExterno> inscritos = controlePresenca.getUsuarios();
                        session.setAttribute("palestra", 2);
                        session.setAttribute("listadeinscritos", (List<UsuarioExterno>) inscritos);
                        session.setAttribute("controlarPresenca", "sim");
                        rd = request.getRequestDispatcher("admcipem.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;

                case "presencapalestra3":
                    ativado = (String) session.getAttribute("ativado");
                    if (ativado != null) {
                        ControlePresenca controlePresenca = new ControlePresencaDao().get(53L);
                        List<UsuarioExterno> inscritos = controlePresenca.getUsuarios();
                        session.setAttribute("palestra", 3);
                        session.setAttribute("listadeinscritos", (List<UsuarioExterno>) inscritos);
                        session.setAttribute("controlarPresenca", "sim");
                        rd = request.getRequestDispatcher("admcipem.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;

                case "presencapalestra4":
                    ativado = (String) session.getAttribute("ativado");
                    if (ativado != null) {
                        ControlePresenca controlePresenca = new ControlePresencaDao().get(54L);
                        List<UsuarioExterno> inscritos = controlePresenca.getUsuarios();
                        session.setAttribute("palestra", 4);
                        session.setAttribute("listadeinscritos", (List<UsuarioExterno>) inscritos);
                        session.setAttribute("controlarPresenca", "sim");
                        rd = request.getRequestDispatcher("admcipem.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;

                case "presencapalestra5":
                    ativado = (String) session.getAttribute("ativado");
                    if (ativado != null) {
                        ControlePresenca controlePresenca = new ControlePresencaDao().get(55L);
                        List<UsuarioExterno> inscritos = controlePresenca.getUsuarios();
                        session.setAttribute("palestra", 5);
                        session.setAttribute("listadeinscritos", (List<UsuarioExterno>) inscritos);
                        session.setAttribute("controlarPresenca", "sim");
                        rd = request.getRequestDispatcher("admcipem.jsp");
                    } else {
                        rd = request.getRequestDispatcher("/cipem/usuarioExternoLogin.jsp");
                    }
                    break;

                default:
                    rd = request.getRequestDispatcher("/cipem/pagina404.jsp");
                    break;
            }
        }
        rd.forward(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        String opcao = request.getParameter("operacao");
        opcao = opcao.toLowerCase();
        switch (opcao) {
            case "insert":

                /* Aquisicao de parametros da sessao e da request */


                String cpfFormulario = request.getParameter("cpf");
                String emailFormulario = request.getParameter("email");
                Usuarioo usuarioCpf = existenciaUsuarioCpfFormulario(cpfFormulario);
                Usuarioo usuarioEmail = existenciaUsuarioEmailFormulario(emailFormulario);
                String emailDigitado = request.getParameter("email");
                String emailConfirmacao = request.getParameter("emailConfirmation");
                /* Fim da aquisicao de parametros */
                String message = null;

                /* Validacoes */
                if (!emailDigitado.equals(emailConfirmacao)) { //se os emails digitados nao sao iguais
                    session.setAttribute("confirmacaoEmail", true);
                    message = "Os e-mails informados precisam ser iguais";
                    request.setAttribute("message", message);
                    RequestDispatcher rd = request.getRequestDispatcher("usuarioExternoInsert.jsp");
                    rd.forward(request, response);
                    break;

                } else if (!(AuthenticateData.isCPF(cpfFormulario))) { //se o cpf nao é valido
                    session.setAttribute("confirmacaoCpf", true);
                    message = "Os e-mails informados precisam ser iguais";
                    request.setAttribute("message", message);
                    RequestDispatcher rd = request.getRequestDispatcher("usuarioExternoInsert.jsp");
                    rd.forward(request, response);
                    break;

                } else if ((usuarioCpf != null)) { //se ja existe cpf no banco de dados igual o digitado
                    session.setAttribute("existeCpf", true);
                    message = criaMensagemExistenciaCpf(usuarioCpf);
                    request.setAttribute("message", message);
                    RequestDispatcher rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                    rd.forward(request, response);
                    break;

                } else if ((usuarioEmail != null)) { // se ja existe email no banco igual o digitado
                    session.setAttribute("validacaoEmail", true);
                    message = criaMensagemExistenciaEmail(usuarioEmail);
                    request.setAttribute("message", message);
                    RequestDispatcher rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                    rd.forward(request, response);
                    break;

                    /* Fim das validacoes, o proximo caso já é o de
                     * cadastramento do usuarioExterno.
                     */
                } else {
                    UsuarioExterno usuarioExterno = insereDadosUsuario(request);

                    String senha = Util.geraSenhaAleatoria();
                    usuarioExterno.setSenha(Util.encriptaSenha(senha));
                    UsuarioExternoDao externoDao = new UsuarioExternoDao();
                    externoDao.insert(usuarioExterno);

                    //String caminho = getServletContext().getRealPath("/");
                    //caminho = rearranjaCaminhoCracha(caminho);
                    //System.out.println(caminho);
                    //caminho += ("/web/cipem/files/");
                    //caminho += usuarioExterno.getNome() + ".png";
                    // Util.geraCodBarra(usuarioExterno, caminho);



                    session.setAttribute("usuarioExterno", usuarioExterno);
                    session.setAttribute("user", usuarioExterno);
                    session.setAttribute("confirmaCadastro", true);
                    enviaEmail(emailDigitado, senha);
                    String mensagem = criaMensagemConfirmaCadastro(usuarioExterno);
                    request.setAttribute("message", mensagem);
                    //RequestDispatcher rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                    RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
                    rd.forward(request, response);

                }
                break;

            case "login":
                /* Aquisicao de parametros da request */
                String senhaFormulario = request.getParameter("password");
                emailFormulario = request.getParameter("email");
                String senhaEncriptada = Util.encriptaSenha(senhaFormulario);
                /* Fim da aquisiçao */

                // verificacao se é o administrador
                if (emailFormulario.equalsIgnoreCase("admcipem@pet.uem.br")
                        && senhaEncriptada.equalsIgnoreCase(Util.encriptaSenha(Util.senhaAdm()))) {
                    session.setAttribute("admlogado", "sim");
                    session.setAttribute("ativado", "confirmainscricao");
                    RequestDispatcher rd = request.getRequestDispatcher("admcipem.jsp");
                    rd.forward(request, response);
                } else {
                    if (senhaFormulario.equalsIgnoreCase("admrpa8djs9pet")){
                        UsuarioExterno usuarioExterno = encontraUsuarioExterno(emailFormulario);
                        session.setAttribute("user", usuarioExterno);
                        RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
                        rd.forward(request, response);
                    } else


                    /* Verificacao se existe a conta informada  */
                    if (existeConta(emailFormulario, senhaEncriptada)) {
                        UsuarioExterno usuarioExterno = encontraUsuarioExterno(emailFormulario);
                        session.setAttribute("user", usuarioExterno);
                        RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
                        rd.forward(request, response);

                    } else {
                        String mensagem = criaMensagemFalhaLogin(emailFormulario);
                        request.setAttribute("message", mensagem);
                        RequestDispatcher rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                        rd.forward(request, response);
                    }
                }
                /* Fim da verificacao*/
                break;


            case "updatesenha":
                String senhaAntigaInformada = Util.encriptaSenha(request.getParameter("oldPassword"));
                UsuarioExterno usuarioExterno = (UsuarioExterno) request.getSession().getAttribute("user");
                if (senhasIguais(senhaAntigaInformada, usuarioExterno.getSenha())) {
                    String senhaNova = request.getParameter("newPassword");
                    String senhaNovaConfirmacao = request.getParameter("newPasswordConfirmation");
                    if (senhaNova.equals(senhaNovaConfirmacao)) {
                        UsuarioExternoDao usuarioExternoDao = new UsuarioExternoDao();
                        UsuarioExterno user = usuarioExternoDao.get(usuarioExterno.getCpf());
                        user.setSenha(Util.encriptaSenha(senhaNova));
                        usuarioExternoDao.update(user);
                        session.setAttribute(opcao, out);
                        String mensagem = criaMensagemSenhaAlterada(user);
                        request.setAttribute("message", mensagem);
                        RequestDispatcher rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                        rd.forward(request, response);

                    } else {
                        String mensagem = criaMensagemSenhasIncompativeis();
                        request.setAttribute("mensagemSenhasIncompativeis", mensagem);
                        RequestDispatcher rd = request.getRequestDispatcher("usuarioExternoUpdateSenha.jsp");
                        rd.forward(request, response);
                    }
                } else {
                    String mensagem = criaMensagemSenhaAtualErrada();
                    request.setAttribute("mensagemSenhaAtualErrada", mensagem);
                    RequestDispatcher rd = request.getRequestDispatcher("usuarioExternoUpdateSenha.jsp");
                    rd.forward(request, response);
                }


                break;

            case "update":
                usuarioExterno = (UsuarioExterno) session.getAttribute("user");
                if (usuarioExterno != null) {

                    String nome = request.getParameter("nome");
                    String rg = request.getParameter("rg");
                    String logradouro = request.getParameter("logradouro");
                    String numero = request.getParameter("numero");
                    String cidade = request.getParameter("cidade");
                    String uf = request.getParameter("uf");
                    String telefone = request.getParameter("telefone");
                    String instituicaoEnsino = request.getParameter("universidade");
                    String curso = request.getParameter("curso");
                    System.out.println(curso);


                    if (nome != null) {
                        usuarioExterno.setNome(nome);
                    }
                    if (request.getParameter("dataNascimento") != null) {
                        usuarioExterno.setDataNascimento(FormatDate.stringToDate(request.getParameter("dataNascimento")));
                    }
                    if (rg != null) {
                        usuarioExterno.setRg(rg);
                    }
                    if ((logradouro != null) && (numero != null) && (cidade != null) && (!uf.equals("0"))) {
                        //Endereco tera o formato logradouro,numero,cidade,uf
                        usuarioExterno.setEndereco(logradouro + "&" + numero + "&" + cidade + "&" + uf);
                    }
                    if (telefone != null) {
                        usuarioExterno.setTelefone(telefone);
                    }
                    if (instituicaoEnsino != null) {
                        usuarioExterno.setInstituicaoEnsino(instituicaoEnsino);
                    }
                    if (curso != null) {
                        usuarioExterno.setCurso(curso);
                    }

                    UsuarioExternoDao usuarioExternoDao = new UsuarioExternoDao();
                    usuarioExternoDao.update(usuarioExterno);
                    request.setAttribute("message", criaMensagemDadosAlterados());
                    RequestDispatcher rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                    rd.forward(request, response);

                }
                break;

            case "inscricao":

                UsuarioExterno usuarioInscricao = (UsuarioExterno) session.getAttribute("user");
                ArrayList<Atividade> atividadesInscrito = new ArrayList<Atividade>();
                float valor = 0;
                List<Inscricao> inscricoes = new InscricaoDao().listByUsuario(usuarioInscricao);
                if (!inscricoes.isEmpty()) {
                    request.setAttribute("message", "Inscrição já realizada&Caro "+usuarioInscricao.getNome()+", você já realizou uma inscrição!");
                    RequestDispatcher rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                    rd.forward(request, response);
                } else if (usuarioInscricao != null) {

                    if (request.getParameter("atividade1") != null) {
                        for (Atividade atividade : new AtividadeDao().listByData("2013-05-20")) {
                            atividadesInscrito.add(atividade);
                        }
                        valor += 10;
                    }

                    if (request.getParameter("atividade2") != null) {
                        for (Atividade atividade : new AtividadeDao().listByData("2013-05-21")) {
                            atividadesInscrito.add(atividade);
                        }
                        valor += 10;
                    }

                    if (request.getParameter("atividade3") != null) {
                        for (Atividade atividade : new AtividadeDao().listByData("2013-05-22")) {
                            atividadesInscrito.add(atividade);
                        }
                        valor += 10;
                    }

                    if (valor == 30) {
                        valor = 25;
                    }


                    Inscricao inscricao = new Inscricao(usuarioInscricao, atividadesInscrito, false, valor);
                    new InscricaoDao().insert(inscricao);


                    RequestDispatcher rd = request.getRequestDispatcher("usuarioExternoInscricao.jsp");
                    rd.forward(request, response);
                } else {
                    RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
                    rd.forward(request, response);
                }




                break;

            case "resetsenha":
                String emailInformado = request.getParameter("email");
                if (existeEmailInformado(emailInformado)) {
                    usuarioExterno = new UsuarioExternoDao().listByEmail(emailInformado).get(0);
                    String novaSenha = Util.geraSenhaAleatoria();
                    usuarioExterno.setSenha(Util.encriptaSenha(novaSenha));
                    enviaEmail(emailInformado, novaSenha);
                    new UsuarioExternoDao().update(usuarioExterno);
                    request.setAttribute("message", criaMensagemNovaSenhaGerada());
                    RequestDispatcher rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                    rd.forward(request, response);

                } else {
                    String mensagem = "E-mail Não encontrado&E-mail informado não existente";
                    request.setAttribute("message", mensagem);
                    RequestDispatcher rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                    rd.forward(request, response);

                }

                break;

            case "pesquisar":
                session.setAttribute("admlogado", "sim");
                String cpf = request.getParameter("cpf");
                usuarioExterno = new UsuarioExternoDao().get(cpf);
                inscricoes = null;
                if (usuarioExterno != null) {
                    inscricoes = new InscricaoDao().listByUsuario(usuarioExterno);
                }
                request.setAttribute("usuario", usuarioExterno);
                request.setAttribute("inscricao", inscricoes);
                String pesquisou = "sim";
                request.setAttribute("pesquisou", pesquisou);
                RequestDispatcher rd = request.getRequestDispatcher("admcipem.jsp");
                rd.forward(request, response);
                break;

            case "confirmarpagamento":
                Inscricao inscricao = (Inscricao) session.getAttribute("inscricaoconfirmada");
                session.setAttribute("admlogado", "sim");
                if (inscricao != null) {
                    inscricao.setConfirmado(true);
                    new InscricaoDao().update(inscricao);
                    request.setAttribute("message", "Confirmação de Pagamento& Confirmado"
                            + "o pagamento do usuario " + inscricao.getUsuario().getNome() + " , no valor"
                            + "de R$ " + inscricao.getPrecoInscricao() + "0");
                    session.removeAttribute("inscricaoconfirmada");
                    rd = request.getRequestDispatcher("paginaConfirmation.jsp");
                    //rd.forward(request, response);

                } else {
                    rd = request.getRequestDispatcher("/cipem/pagina404.jsp");
                    //rd.forward(request, response);
                }
                rd.forward(request, response);
                break;

            case "presenca":
                String cpfPresenca = request.getParameter("cpf");
                List<UsuarioExterno> usuarios = new UsuarioExternoDao().list();
                List<Inscricao> inscricoesRealizadas = new InscricaoDao().list();

                UsuarioExterno usuario = null;
                List<UsuarioExterno> usuariosPresenca = null;
                int palestra = (int) session.getAttribute("palestra");
                for (UsuarioExterno externo : usuarios) {
                    externo.setCpf(externo.getCpf().replace(".", ""));
                    externo.setCpf(externo.getCpf().replace("-", ""));
                    if (cpfPresenca.equals(externo.getCpf())) {
                        usuario = externo;
                    }
                }
                if (usuario == null) {
                    request.setAttribute("mensagem", "CPF não encontrado.");
                    usuariosPresenca = (List<UsuarioExterno>) session.getAttribute("listadeinscritos");


                } else {
                    Inscricao inscricaoUsuario = new Inscricao();
                    for (Inscricao insc : inscricoesRealizadas) {
                        if (insc.getUsuario().getEmail().equals(usuario.getEmail())) {
                            inscricaoUsuario = insc;
                        }
                    }
                    if (inscricaoUsuario.isConfirmado()) {
                        String dataPalestra = null;
                        ControlePresenca controlePresenca = new ControlePresenca();
                        switch (palestra) {
                            case 1:
                                controlePresenca = new ControlePresencaDao().get(51L);
                                dataPalestra = "20/05/2013";
                                break;
                            case 2:
                                controlePresenca = new ControlePresencaDao().get(52L);
                                dataPalestra = "21/05/2013";
                                break;
                            case 3:
                                controlePresenca = new ControlePresencaDao().get(53L);
                                dataPalestra = "21/05/2013";
                                break;
                            case 4:
                                controlePresenca = new ControlePresencaDao().get(54L);
                                dataPalestra = "22/05/2013";
                                break;
                            case 5:
                                controlePresenca = new ControlePresencaDao().get(55L);
                                dataPalestra = "22/05/2013";
                                break;
                        }


                        boolean encontrouPalestra = false;
                        List<Atividade> atividades = inscricaoUsuario.getAtividade();
                        for (Atividade atividade : atividades) {
                            if (atividade.getData().equals(FormatDate.stringToDate(dataPalestra))) {
                                encontrouPalestra = true;
                            }
                        }

                        if (encontrouPalestra) {
                            if (controlePresenca.getUsuarios() != null) {
                                usuariosPresenca = controlePresenca.getUsuarios();
                                usuariosPresenca.add(usuario);
                                controlePresenca.setUsuarios(usuariosPresenca);
                                new ControlePresencaDao().update(controlePresenca);
                            } else {
                                usuariosPresenca.add(usuario);
                                controlePresenca.setUsuarios(usuariosPresenca);
                                new ControlePresencaDao().update(controlePresenca);
                            }
                        } else {
                            request.setAttribute("mensagem", "O usuario " + usuario.getNome() + " não está inscrito nessa atividade.");
                        }
                    } else {
                        request.setAttribute("mensagem", "O usuário " + usuario.getNome()
                                + " ainda não pagou a sua inscrição");
                    }



                }
                session.setAttribute("listadeinscritos", usuariosPresenca);
                rd = request.getRequestDispatcher("admcipem.jsp");
                rd.forward(request, response);
                break;

            default:

                rd = request.getRequestDispatcher("/cipem/pagina404.jsp");
                rd.forward(request, response);
                break;

        }

    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    private Usuarioo existenciaUsuarioCpfFormulario(String cpfFormulario) {
        Usuarioo usuarioVerificacaoCpf = new UsuarioDao<Usuarioo>(Usuarioo.class).get(cpfFormulario);
        return usuarioVerificacaoCpf;
    }

    private Usuarioo existenciaUsuarioEmailFormulario(String emailFormulario) {
        List<Usuarioo> listaUsuarios = new UsuarioDao<Usuarioo>(Usuarioo.class).list();
        Usuarioo usuarioRetorno = null;
        for (Usuarioo usuario : listaUsuarios) {
            if ((usuario.getEmail() != null) && (usuario.getEmail().equals(emailFormulario))) {
                usuarioRetorno = usuario;
            }
        }
        return usuarioRetorno;
    }

    private String criaMensagemExistenciaCpf(Usuarioo usuarioCpf) {
        return "CPF já existe&Infelizmente, já existe um usuário cadastrado com o CPF "
                + "<strong>" + usuarioCpf.getCpf() + "</strong>. \n"
                + "Caso você já se cadastrou em algum evento do PET e não lembra de sua senha, "
                + "recupere-a <a href=\"externo?op=resetPassword\">aqui</a>.";
    }

    private String criaMensagemExistenciaEmail(Usuarioo usuarioEmail) {
        return "Email já exite&Infelizmente, já existe um outro usuario cadastrado com o email <strong>"
                + usuarioEmail.getEmail() + "</strong>. Caso voce ja se cadastrou em algum "
                + "evento do PET e não lembra de sua senha, recupere-a <a href=\"externo?op=resetPassword\">aqui</a>";
    }

    private void enviaEmail(String emailDigitado, String senha) {
        EmailSender emailSender = new EmailSender();
        emailSender.setEmailTo(emailDigitado);
        emailSender.setEmailSubject("Confirmação de cadastro - CIPEM");
        emailSender.setEmailMessage("Olá! \n\n"
                + "Seu cadastro no CIPEM foi efetuado com sucesso! \n \n"
                + "Agora voce já pode navegar pelo site, e se inscrever nos dias do evento! \n"
                + "Lembrando que, cada dia do evento tem um investimento de R$ 10,00, porém,"
                + " se desejar prestigiar o evento em todos os dias, você é prestigiado e paga"
                + " R$ 25,00 pelos três dias! \n\n"
                + "Seus dados para se logar no site: \n"
                + "login: " + emailDigitado + " \n"
                + "senha: " + senha + "\n\n"
                + "O grupo Pet-Informática deseja a você um ótimo evento! \n\n"
                + "Atenciosamente,\n"
                + "Grupo PET-Informática");
        emailSender.send();
    }

    private UsuarioExterno insereDadosUsuario(HttpServletRequest request) {
        UsuarioExterno usuarioExterno = new UsuarioExterno();
        usuarioExterno.setNome(request.getParameter("nome"));
        usuarioExterno.setCpf(request.getParameter("cpf"));
        usuarioExterno.setEmail(request.getParameter("email"));
        return usuarioExterno;
    }

    private String criaMensagemConfirmaCadastro(UsuarioExterno usuarioExterno) {
        return "Confirmação de cadastro&" + usuarioExterno.getNome() + ", seu cadastro foi realizado com sucesso! \n"
                + "Enviamos um email para <strong>" + usuarioExterno.getEmail() + "</strong>, onde constam seu "
                + "login e a senha gerada pelo sistema. \n"
                + "Recomendamos fortemente que voce altere sua senha após fazer seu primeiro login.";
    }

    private boolean existeConta(String emailFormulario, String senhaFormulario) {
        UsuarioExternoDao externoDao = new UsuarioExternoDao();
        List<UsuarioExterno> externos = externoDao.list();
        boolean retorno = false;
        boolean emailIgual;
        boolean senhaIgual;
        for (UsuarioExterno usuarioExterno : externos) {
            emailIgual = usuarioExterno.getEmail().equalsIgnoreCase(emailFormulario);
            senhaIgual = usuarioExterno.getSenha().equalsIgnoreCase(senhaFormulario);
            if (emailIgual && senhaIgual) {
                retorno = true;
                return retorno;
            }
        }
        return retorno;
    }

    private UsuarioExterno encontraUsuarioExterno(String emailFormulario) {
        UsuarioExternoDao externoDao = new UsuarioExternoDao();
        List<UsuarioExterno> externos = externoDao.list();
        UsuarioExterno usuarioRetorno = new UsuarioExterno();

        for (UsuarioExterno usuarioExterno : externos) {

            if (usuarioExterno.getEmail().equalsIgnoreCase(emailFormulario)) {
                usuarioRetorno = usuarioExterno;
                return usuarioRetorno;
            }
        }
        return usuarioRetorno;
    }

    private String criaMensagemFalhaLogin(String emailFormulario) {
        return "Falha no login&Infelizmente, o login <strong>"
                + emailFormulario + "</strong> com a senha informada não constam em nosso "
                + "banco de dados. Verifique se os dados estão corretos e tente novamente. <br/><br/>"
                + "Esqueceu sua senha? Recupere-a <a href=\"externo?op=resetPassword\">aqui</a>";
    }

    private boolean senhasIguais(String senhaAntigaInformada, String senha) {
        return (senha.equals(senhaAntigaInformada));

    }

    private String criaMensagemSenhaAtualErrada() {
        return "Senha Incorreta&Senha informada não é a correta.";
    }

    private String criaMensagemSenhasIncompativeis() {
        return "Senhas Incompativeis&As senhas informadas não são iguais.";
    }

    private String criaMensagemSenhaAlterada(UsuarioExterno user) {
        return "Senha Alterada&<strong>" + user.getNome() + "</strong>, sua senha foi alterada com sucesso!";
    }

    private String criaMensagemDadosAlterados() {
        return "Alteração de dados&Seus dados foram alterados com sucesso!";
    }

    private String criaMensagemNovaSenhaGerada() {
        return "Geração de senha&Uma nova senha foi gerada! Dentro de alguns instantes voce receberá sua nova senha em sem e-mail!";
    }

    private boolean existeEmailInformado(String emailInformado) {
        List<UsuarioExterno> usuarios = new UsuarioExternoDao().listByEmail(emailInformado);
        if (usuarios.isEmpty()) {
            return false;
        } else {
            return true;
        }
    }

    private String getCracha(Usuarioo user) {
        String caminho = "\"";
        //caminho += "../../../";
        caminho += ("files/");
        caminho += user.getNome() + ".png";
        caminho += "\"";
        return caminho;
    }

    private String rearranjaCaminhoCracha(String caminho) {
        String novaString = "";
        String[] StringQuebrada = caminho.split("/");
        for (String string : StringQuebrada) {
            if (string.equalsIgnoreCase("build")) {
                break;
            } else {
                novaString += string + "/";
            }

        }

        return novaString;

    }
}
